Factor Analysis of FSS-BR

Hidden to avoid identification hidden@example.com

Prerequisites

Loading libs (packages)

wants <- c('mirt','semPlot','semTools','psych','parameters','olsrr','lavaan','knitr','matrixStats','stats','dplyr','readr')
has <- wants %in% rownames(installed.packages())
if (any(!has)) install.packages(wants[!has])

Loading internal functions

#' Calculate factors from cfa model
#'
#' This functions calculate composite reliability values of factors
#'
#' @param fit a lavaan object expected to contain a CFA model
#' @param return.total logical indicating whether to return a final column containing the reliability of a composite of all items.
#' @return Reliability values of each factor in each group.
getFactors <- function(fit, secondFactor = NULL) {
  sl <- standardizedSolution(fit)
  sl <- sl[sl$op == '=~',]
  lfactors <- lapply(unique(sl$lhs), FUN = function(lhs) {
    sl$rhs[sl$lhs == lhs] 
  })
  names(lfactors) <- unique(sl$lhs)
  if (!is.null(secondFactor))
    lfactors[[secondFactor]] <- NULL
  return(lfactors)
}
#' Calculate composite reliability of factors
#'
#' This functions calculate composite reliability values of factors
#'
#' @param fit a lavaan object expected to contain a CFA model
#' @param return.total logical indicating whether to return a final column containing the reliability of a composite of all items.
#' @return Reliability values of each factor in each group.
compReliability <- function(fit, return.total = F) {
  toReturn <- sapply(getFactors(fit), FUN = function(x) {
    sl <- standardizedSolution(fit)
    sl <- sl$est.std[sl$op == "=~" & sl$rhs %in% x]
    names(sl) <- x
    
    re <- 1 - sl^2
    sum(sl)^2 / (sum(sl)^2 + sum(re))
  })
  if (return.total) {
    sl <- standardizedSolution(fit)
    sl <- sl$est.std[sl$op == "=~"]
    re <- 1 - sl^2
    toReturn <- c(toReturn, total=sum(sl)^2 / (sum(sl)^2 + sum(re)))
  }
  toReturn
}
#' Asessing convergent and discriminant validity
#'
#' This functions assess the discriminant and convergent validity of factors 
#' based on Heterotrait-Monotrait Ratio (semTools::htmt).
#'
#' @param fit a lavaan object expected to contain a CFA model
#' @param lnv string with the lavaan syntax of the fit CFA model.
#' @param dat data.frame with the data used in the CFA model
#' @param secondFactor second factor to be used in the CFA model
#' @return Composite Reliability, AVE and matrix of Heterotrait-Monotrait Ratio
convergentDiscriminantValidity <- function(fit, lvn, dat, secondFactor = NULL) {
  library(olsrr)
  library(semTools)
  
  CR <- compReliability(fit)
  AVE <- reliability(fit)[c("avevar"),]
  if (!is.null(secondFactor)) {
    AVE[secondFactor] <- reliability(fit, return.total = TRUE)["avevar","total"]
  }
  
  factors <- getFactors(fit, secondFactor)
  
  for (f1 in names(factors)) dat[[f1]] <- rowSums(dat[,factors[[f1]]])
  if (is.null(secondFactor)) secondFactor <- 'F0'
  dat[[secondFactor]] <- rowSums(dat[,names(factors)])
  
  mdl <- lm(as.formula(paste0(secondFactor,' ~ ', paste0(names(factors), collapse = '+'))), data = dat)
  VIF <- ols_vif_tol(mdl)$VIF
  VIF.i <- sapply(names(factors), FUN = function(f1) {
    mdl <- lm(as.formula(paste0(f1,' ~ ',paste0(factors[[f1]], collapse = '+'))), data = dat)
    max(ols_vif_tol(mdl)$VIF)
  })
  
  
  lvn2 <- stringr::str_replace(lvn, paste0("\n\\s*",secondFactor,"\\s*.*=~\\s*.*\n","\n"),"\n\n")
  corr.df <- as.table(inspect(fit, "cor.lv"))
  corr.df[upper.tri(corr.df)] <- NA
  htmt.df <- as.table(semTools::htmt(lvn2, dat))
  if (is.null(secondFactor) || secondFactor != 'F0') {
    cnames <- colnames(htmt.df)
    htmt.df <- cbind(htmt.df, rep(NA, nrow(htmt.df)))
    htmt.df <- rbind(htmt.df, rep(NA, ncol(htmt.df)))
    rownames(htmt.df) <- c(cnames, secondFactor)
    colnames(htmt.df) <- c(cnames, secondFactor)  
  }
  htmt.df[lower.tri(htmt.df)] <- NA
  
  df <- corr.df
  df[upper.tri(corr.df)] <- htmt.df[upper.tri(df)]
  for (cname in names(AVE)) df[cname,cname] <-  sqrt(AVE[[cname]])
  
  as.data.frame(cbind(CR,AVE, VIF, VIF.i, df))
}
#' Summarize fit indexes of CFA models
#'
#' This functions summarize fit indexes from CFA models
#'
#' @param fits a list of lavaan objects with CFA models
#' @return fit indexes results of CFA models
summariseFits <- function(fits, indexes = c(
  "chisq","df","gfi","agfi","cfi","tli","srmr",
  "rmsea","rmsea.ci.lower","rmsea.ci.upper")) {
  df_fit <- do.call(rbind, lapply(fits, FUN = function(fit) {
    dat <- as.list(round(fitMeasures(fit,indexes), 3))
    rbind(c(dat[c("chisq","df")],"chisq/df"=round(dat$chisq/dat$df,3)
            , dat[c("gfi","agfi","cfi","tli","srmr","rmsea")]
            , "rmsea.ci" = paste0("[",dat$rmsea.ci.lower,"; ",dat$rmsea.ci.upper,"]")))
  }))
  rownames(df_fit) <- names(fits)
  return(df_fit) 
}

Loading data

library(readr)
library(dplyr)

fss <- read.csv("../data/fss.csv")
fss <- select(fss, starts_with("Q"))

Checking assumptions

Performing Bartlett’s test of sphericity

(parameters::check_sphericity_bartlett(fss))
# Test of Sphericity

Bartlett's test of sphericity suggests that there is sufficient significant correlation in the data for factor analysis (Chisq(630) = 6795.14, p < .001).

Performing Kaiser, Meyer, Olkin (KMO) based on Measure of Sampling Adequacy (MSA)

library(psych)
(kmo_mod <- psych::KMO(fss)) 
Kaiser-Meyer-Olkin factor adequacy
Call: psych::KMO(r = fss)
Overall MSA =  0.87
MSA for each item = 
  Q1   Q2   Q3   Q4   Q5   Q6   Q7   Q8   Q9  Q10  Q11  Q12  Q13  Q14  Q15  Q16  Q17  Q18  Q19 
0.90 0.89 0.88 0.91 0.90 0.84 0.90 0.69 0.80 0.89 0.92 0.84 0.85 0.91 0.91 0.80 0.85 0.81 0.85 
 Q20  Q21  Q22  Q23  Q24  Q25  Q26  Q27  Q28  Q29  Q30  Q31  Q32  Q33  Q34  Q35  Q36 
0.82 0.90 0.85 0.88 0.92 0.89 0.88 0.92 0.83 0.65 0.93 0.88 0.86 0.94 0.80 0.77 0.87 

Summarizing assumptions

df <- data.frame(item=colnames(fss))
df <- cbind(df, as.vector(sapply(colnames(fss), function(x) { round(mean(fss[[x]]), digits = 3) })))
df <- cbind(df, as.vector(sapply(colnames(fss), function(x) { round(median(fss[[x]]), digits = 3) })))
df <- cbind(df, as.vector(sapply(colnames(fss), function(x) { round(sd(fss[[x]]), digits = 3) })))
df <- cbind(df, as.vector(sapply(colnames(fss), function(x) { round(skew(fss[[x]])[[1]], digits = 3) })))
df <- cbind(df, as.vector(sapply(colnames(fss), function(x) { round(kurtosi(fss[[x]]), digits = 3) })))
df <- cbind(df, as.vector(sapply(colnames(fss), function(x) { round(shapiro.test(fss[[x]])$statistic, digits = 3)})))
df <- cbind(df, as.vector(sapply(colnames(fss), function(x) {
    p.val <- shapiro.test(fss[[x]])$p
    if (p.val < 0.001)
      return("< 0.001")
    else
      return(round(p.val, digits = 3))
  })))
df <- cbind(df, as.vector(round(kmo_mod$MSAi, digits =3)))
colnames(df) <- c("Item","M","Mdn","SD","Skew","Kurtosis","statistic","p.val","MSAi")

knitr::kable(df, digits = 3)
Item M Mdn SD Skew Kurtosis statistic p.val MSAi
Q1 3.987 4 0.831 -0.960 1.368 0.814 < 0.001 0.901
Q2 3.167 3 1.164 -0.202 -0.919 0.906 < 0.001 0.891
Q3 3.306 3 0.981 -0.142 -0.738 0.895 < 0.001 0.884
Q4 3.717 4 0.886 -0.598 0.164 0.862 < 0.001 0.909
Q5 3.551 4 0.989 -0.425 -0.452 0.886 < 0.001 0.902
Q6 3.136 3 1.225 -0.229 -1.062 0.895 < 0.001 0.841
Q7 3.515 4 1.032 -0.492 -0.433 0.885 < 0.001 0.902
Q8 3.071 3 1.199 -0.128 -0.873 0.914 < 0.001 0.688
Q9 3.505 4 1.032 -0.520 -0.238 0.890 < 0.001 0.800
Q10 3.793 4 1.003 -0.590 -0.217 0.873 < 0.001 0.892
Q11 3.414 4 1.041 -0.352 -0.596 0.897 < 0.001 0.919
Q12 3.076 3 1.048 -0.072 -0.790 0.906 < 0.001 0.838
Q13 3.167 3 0.992 -0.089 -0.756 0.898 < 0.001 0.849
Q14 3.598 4 1.120 -0.694 -0.309 0.867 < 0.001 0.913
Q15 3.639 4 0.910 -0.458 -0.250 0.873 < 0.001 0.909
Q16 3.331 4 1.156 -0.226 -0.989 0.896 < 0.001 0.799
Q17 3.278 3 1.018 -0.216 -0.632 0.903 < 0.001 0.846
Q18 3.043 3 1.082 -0.049 -0.710 0.915 < 0.001 0.810
Q19 3.553 4 1.024 -0.429 -0.447 0.892 < 0.001 0.851
Q20 3.530 4 1.124 -0.388 -0.730 0.895 < 0.001 0.815
Q21 3.366 3 0.978 -0.282 -0.364 0.900 < 0.001 0.902
Q22 3.242 3 1.017 -0.254 -0.867 0.879 < 0.001 0.853
Q23 3.510 4 0.997 -0.405 -0.433 0.891 < 0.001 0.884
Q24 3.682 4 0.900 -0.398 -0.395 0.873 < 0.001 0.923
Q25 3.386 4 1.031 -0.340 -0.701 0.888 < 0.001 0.893
Q26 3.323 3 1.070 -0.312 -0.684 0.900 < 0.001 0.882
Q27 3.442 4 0.978 -0.326 -0.367 0.897 < 0.001 0.916
Q28 3.232 3 1.152 -0.074 -0.875 0.912 < 0.001 0.827
Q29 3.043 3 1.107 0.016 -0.886 0.909 < 0.001 0.648
Q30 3.841 4 0.959 -0.544 -0.399 0.866 < 0.001 0.927
Q31 3.578 4 0.926 -0.413 -0.410 0.875 < 0.001 0.876
Q32 3.669 4 1.053 -0.577 -0.492 0.869 < 0.001 0.863
Q33 3.702 4 0.867 -0.602 0.054 0.850 < 0.001 0.936
Q34 3.409 4 1.234 -0.378 -0.930 0.892 < 0.001 0.796
Q35 3.265 3 1.142 -0.246 -0.760 0.910 < 0.001 0.770
Q36 3.846 4 1.053 -0.644 -0.386 0.862 < 0.001 0.868

Exploratory Factorial Analysis (EFA)

Performing parallel factorial analysis

library(psych)
(pfa_mod <- fa.parallel(fss, fm = 'wls', fa = 'fa', cor='poly', n.iter = 1, main = "", ylabel = "", plot = F))
Parallel analysis suggests that the number of factors =  9  and the number of components =  NA 

Call: fa.parallel(x = fss, fm = "wls", fa = "fa", main = "", n.iter = 1, 
    ylabel = "", cor = "poly", plot = F)
Parallel analysis suggests that the number of factors =  9  and the number of components =  NA 

 Eigen Values of 

 eigen values of factors
 [1]  9.97  3.37  1.91  1.10  0.90  0.73  0.46  0.33  0.28  0.18  0.11  0.04 -0.03 -0.08 -0.11
[16] -0.13 -0.18 -0.22 -0.25 -0.28 -0.30 -0.31 -0.36 -0.38 -0.39 -0.44 -0.47 -0.51 -0.55 -0.55
[31] -0.57 -0.62 -0.63 -0.65 -0.69 -0.73

 eigen values of simulated factors
 [1]  0.68  0.55  0.50  0.46  0.42  0.40  0.38  0.31  0.27  0.22  0.21  0.16  0.12  0.10  0.09
[16]  0.07  0.05  0.03 -0.02 -0.03 -0.08 -0.09 -0.12 -0.14 -0.17 -0.19 -0.24 -0.25 -0.29 -0.30
[31] -0.34 -0.35 -0.40 -0.42 -0.44 -0.48

 eigen values of components 
 [1] 10.63  4.19  2.70  1.88  1.61  1.45  1.14  1.02  0.93  0.87  0.84  0.78  0.66  0.62  0.59
[16]  0.55  0.50  0.48  0.44  0.41  0.39  0.38  0.33  0.32  0.29  0.28  0.24  0.23  0.21  0.19
[31]  0.18  0.16  0.15  0.13  0.11  0.09

 eigen values of simulated components
[1] NA
plot(pfa_mod)

Running EFA with 9 factors

efa_mod <- fa(fss, nfactors = 9, cor = 'poly', fm = 'wls')
print(loadings(fa.sort(efa_mod)), cutoff = 0.3)
Loadings:
    WLS2   WLS9   WLS8   WLS4   WLS5   WLS7   WLS6   WLS3   WLS1  
Q22  0.869                                                        
Q13  0.725                                                        
Q12  0.703                                                        
Q3   0.599                                                        
Q21  0.592                                                        
Q6   0.464                                                        
Q1   0.332         0.328                                          
Q23         0.875                                                 
Q32         0.714                                                 
Q5          0.598                                                 
Q33         0.424                                                 
Q24         0.400                                            0.386
Q4          0.350                                                 
Q10                0.644                                          
Q30                0.636                                          
Q36                0.631                                          
Q31  0.322         0.332                                          
Q28                       0.708                                   
Q18                       0.691                                   
Q8                        0.688                                   
Q34                       0.663  0.463                            
Q16                              0.892                            
Q7                               0.504                            
Q25                              0.480                       0.333
Q17                                     0.839                     
Q26                                     0.447                     
Q27                                     0.362                     
Q20                0.329                       0.682              
Q29                                            0.671  0.464       
Q2                                             0.597              
Q11                                     0.344  0.451              
Q9                                                    0.713       
Q19                                                   0.696       
Q35                                                   0.620       
Q14                                                          0.506
Q15                                                          0.435

                WLS2  WLS9  WLS8  WLS4  WLS5  WLS7  WLS6  WLS3  WLS1
SS loadings    3.382 2.447 2.080 2.105 1.758 1.608 1.744 1.879 1.198
Proportion Var 0.094 0.068 0.058 0.058 0.049 0.045 0.048 0.052 0.033
Cumulative Var 0.094 0.162 0.220 0.278 0.327 0.372 0.420 0.472 0.506

Construct validity of the long version of the FSS-BR

We decided to use the mean and variance-adjusted weighted least squares (WLSMV) estimator. WLSMV adequately performs on non-normal variables, and WLSMV is a robust estimator developed to model categorical or ordered data (5-likert scale).

Multicorrelated nine factor model (original model)

Structure validity

library(lavaan)
library(semTools)

mdl4multi <- '
CSB =~ Q1 + Q10 + Q19 + Q28
MAA =~ Q2 + Q11 + Q20 + Q29
CG  =~ Q3 + Q12 + Q21 + Q30
UF  =~ Q4 + Q13 + Q22 + Q31
CTH =~ Q5 + Q14 + Q23 + Q32
SC  =~ Q6 + Q15 + Q24 + Q33
LSC =~ Q7 + Q16 + Q25 + Q34
TT  =~ Q8 + Q17 + Q26 + Q35
AE  =~ Q9 + Q18 + Q27 + Q36

CSB ~~ MAA
CSB ~~ CG
CSB ~~ UF
CSB ~~ CTH
CSB ~~ SC
CSB ~~ LSC
CSB ~~ TT
CSB ~~ AE

MAA ~~ CG
MAA ~~ UF
MAA ~~ CTH
MAA ~~ SC
MAA ~~ LSC
MAA ~~ TT
MAA ~~ AE

CG ~~ UF
CG ~~ CTH
CG ~~ SC
CG ~~ LSC
CG ~~ TT
CG ~~ AE

UF ~~ CTH
UF ~~ SC
UF ~~ LSC
UF ~~ TT
UF ~~ AE

CTH ~~ SC
CTH ~~ LSC
CTH ~~ TT
CTH ~~ AE

SC ~~ LSC
SC ~~ TT
SC ~~ AE

LSC ~~ TT
LSC ~~ AE

TT ~~ AE
'

fitMeasures(cfa(mdl4multi, data=fss), fit.measures = "all")
Warning in lav_object_post_check(object): lavaan WARNING: covariance matrix of latent variables
                is not positive definite;
                use lavInspect(fit, "cov.lv") to investigate.

               npar                fmin               chisq                  df 
            108.000               3.795            3005.767             558.000 
             pvalue      baseline.chisq         baseline.df     baseline.pvalue 
              0.000            7041.108             630.000               0.000 
                cfi                 tli                nnfi                 rfi 
              0.618               0.569               0.569               0.518 
                nfi                pnfi                 ifi                 rni 
              0.573               0.508               0.622               0.618 
               logl   unrestricted.logl                 aic                 bic 
         -18642.612          -17139.728           37501.223           37931.216 
             ntotal                bic2               rmsea      rmsea.ci.lower 
            396.000           37588.530               0.105               0.102 
     rmsea.ci.upper        rmsea.pvalue                 rmr          rmr_nomean 
              0.109               0.000               0.127               0.127 
               srmr        srmr_bentler srmr_bentler_nomean                crmr 
              0.117               0.117               0.117               0.121 
        crmr_nomean          srmr_mplus   srmr_mplus_nomean               cn_05 
              0.121               0.117               0.117              81.901 
              cn_01                 gfi                agfi                pgfi 
             85.139               0.648               0.580               0.543 
                mfi                ecvi 
              0.045               8.136 
fit4multi <- cfa(mdl4multi, data=fss, estimator="WLSMV", std.lv=T)
Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: number of observations (396) too small to compute Gamma

Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: covariance matrix of latent variables
                is not positive definite;
                use lavInspect(fit, "cov.lv") to investigate.
standardizedsolution(fit4multi)
    lhs op rhs est.std    se      z pvalue ci.lower ci.upper
1   CSB =~  Q1   0.518 0.047 11.073  0.000    0.426    0.610
2   CSB =~ Q10   0.640 0.042 15.399  0.000    0.558    0.721
3   CSB =~ Q19   0.469 0.045 10.501  0.000    0.381    0.556
4   CSB =~ Q28   0.466 0.046 10.129  0.000    0.376    0.556
5   MAA =~  Q2   0.696 0.042 16.450  0.000    0.613    0.779
6   MAA =~ Q11   0.793 0.048 16.607  0.000    0.699    0.886
7   MAA =~ Q20   0.633 0.048 13.205  0.000    0.539    0.727
8   MAA =~ Q29   0.346 0.067  5.167  0.000    0.214    0.477
9    CG =~  Q3   0.458 0.050  9.090  0.000    0.359    0.556
10   CG =~ Q12   0.229 0.058  3.917  0.000    0.114    0.344
11   CG =~ Q21   0.599 0.042 14.148  0.000    0.516    0.682
12   CG =~ Q30   0.667 0.048 14.005  0.000    0.573    0.760
13   UF =~  Q4   0.820 0.042 19.492  0.000    0.738    0.903
14   UF =~ Q13   0.415 0.056  7.443  0.000    0.305    0.524
15   UF =~ Q22   0.460 0.054  8.480  0.000    0.354    0.566
16   UF =~ Q31   0.654 0.046 14.323  0.000    0.564    0.743
17  CTH =~  Q5   0.615 0.042 14.766  0.000    0.534    0.697
18  CTH =~ Q14   0.541 0.044 12.430  0.000    0.456    0.626
19  CTH =~ Q23   0.671 0.036 18.626  0.000    0.601    0.742
20  CTH =~ Q32   0.642 0.041 15.823  0.000    0.563    0.722
21   SC =~  Q6   0.220 0.055  4.023  0.000    0.113    0.327
22   SC =~ Q15   0.665 0.037 18.192  0.000    0.594    0.737
23   SC =~ Q24   0.760 0.032 23.853  0.000    0.698    0.823
24   SC =~ Q33   0.676 0.034 19.788  0.000    0.609    0.743
25  LSC =~  Q7   0.789 0.044 17.808  0.000    0.702    0.876
26  LSC =~ Q16   0.694 0.046 15.046  0.000    0.604    0.785
27  LSC =~ Q25   0.716 0.041 17.513  0.000    0.636    0.797
28  LSC =~ Q34   0.542 0.051 10.736  0.000    0.443    0.642
29   TT =~  Q8   0.384 0.057  6.695  0.000    0.272    0.497
30   TT =~ Q17   0.705 0.046 15.359  0.000    0.615    0.795
31   TT =~ Q26   0.767 0.049 15.648  0.000    0.671    0.864
32   TT =~ Q35   0.434 0.057  7.664  0.000    0.323    0.545
33   AE =~  Q9   0.391 0.056  6.981  0.000    0.281    0.501
34   AE =~ Q18   0.442 0.054  8.219  0.000    0.337    0.547
35   AE =~ Q27   0.813 0.032 25.073  0.000    0.749    0.876
36   AE =~ Q36   0.668 0.040 16.710  0.000    0.590    0.746
37  CSB ~~ MAA   0.513 0.084  6.085  0.000    0.348    0.678
38  CSB ~~  CG   0.898 0.063 14.169  0.000    0.774    1.023
39  CSB ~~  UF   0.672 0.066 10.201  0.000    0.543    0.801
40  CSB ~~ CTH   0.725 0.068 10.721  0.000    0.593    0.858
41  CSB ~~  SC   0.797 0.057 14.087  0.000    0.686    0.908
42  CSB ~~ LSC   0.608 0.071  8.596  0.000    0.469    0.746
43  CSB ~~  TT   0.617 0.072  8.569  0.000    0.476    0.758
44  CSB ~~  AE   0.890 0.061 14.594  0.000    0.770    1.009
45  MAA ~~  CG   0.470 0.084  5.600  0.000    0.306    0.635
46  MAA ~~  UF   0.251 0.077  3.251  0.001    0.100    0.403
47  MAA ~~ CTH   0.561 0.071  7.891  0.000    0.422    0.700
48  MAA ~~  SC   0.430 0.076  5.655  0.000    0.281    0.579
49  MAA ~~ LSC   0.418 0.068  6.191  0.000    0.286    0.551
50  MAA ~~  TT   0.654 0.058 11.241  0.000    0.540    0.767
51  MAA ~~  AE   0.647 0.064 10.159  0.000    0.522    0.771
52   CG ~~  UF   0.937 0.050 18.811  0.000    0.839    1.034
53   CG ~~ CTH   0.708 0.077  9.200  0.000    0.557    0.858
54   CG ~~  SC   0.946 0.051 18.501  0.000    0.846    1.046
55   CG ~~ LSC   0.576 0.077  7.506  0.000    0.426    0.727
56   CG ~~  TT   0.469 0.093  5.037  0.000    0.286    0.651
57   CG ~~  AE   0.593 0.070  8.501  0.000    0.456    0.729
58   UF ~~ CTH   0.579 0.075  7.723  0.000    0.432    0.726
59   UF ~~  SC   0.834 0.044 19.078  0.000    0.748    0.919
60   UF ~~ LSC   0.452 0.073  6.227  0.000    0.310    0.594
61   UF ~~  TT   0.232 0.080  2.887  0.004    0.075    0.389
62   UF ~~  AE   0.383 0.076  5.027  0.000    0.233    0.532
63  CTH ~~  SC   0.936 0.048 19.495  0.000    0.842    1.030
64  CTH ~~ LSC   0.677 0.061 11.092  0.000    0.557    0.797
65  CTH ~~  TT   0.646 0.069  9.348  0.000    0.510    0.781
66  CTH ~~  AE   0.668 0.063 10.681  0.000    0.546    0.791
67   SC ~~ LSC   0.578 0.064  9.003  0.000    0.453    0.704
68   SC ~~  TT   0.516 0.077  6.664  0.000    0.364    0.667
69   SC ~~  AE   0.591 0.059 10.006  0.000    0.475    0.707
70  LSC ~~  TT   0.459 0.077  5.934  0.000    0.307    0.611
71  LSC ~~  AE   0.541 0.068  7.960  0.000    0.408    0.674
72   TT ~~  AE   0.860 0.052 16.635  0.000    0.759    0.961
73   Q1 ~~  Q1   0.732 0.048 15.091  0.000    0.637    0.827
74  Q10 ~~ Q10   0.590 0.053 11.102  0.000    0.486    0.695
75  Q19 ~~ Q19   0.780 0.042 18.640  0.000    0.698    0.862
76  Q28 ~~ Q28   0.783 0.043 18.296  0.000    0.699    0.867
77   Q2 ~~  Q2   0.515 0.059  8.741  0.000    0.400    0.631
78  Q11 ~~ Q11   0.372 0.076  4.911  0.000    0.223    0.520
79  Q20 ~~ Q20   0.600 0.061  9.883  0.000    0.481    0.718
80  Q29 ~~ Q29   0.881 0.046 19.051  0.000    0.790    0.971
81   Q3 ~~  Q3   0.790 0.046 17.143  0.000    0.700    0.881
82  Q12 ~~ Q12   0.948 0.027 35.382  0.000    0.895    1.000
83  Q21 ~~ Q21   0.641 0.051 12.631  0.000    0.542    0.740
84  Q30 ~~ Q30   0.555 0.063  8.746  0.000    0.431    0.680
85   Q4 ~~  Q4   0.327 0.069  4.736  0.000    0.192    0.462
86  Q13 ~~ Q13   0.828 0.046 17.921  0.000    0.737    0.919
87  Q22 ~~ Q22   0.788 0.050 15.794  0.000    0.691    0.886
88  Q31 ~~ Q31   0.573 0.060  9.595  0.000    0.456    0.690
89   Q5 ~~  Q5   0.621 0.051 12.119  0.000    0.521    0.722
90  Q14 ~~ Q14   0.707 0.047 15.015  0.000    0.615    0.800
91  Q23 ~~ Q23   0.549 0.048 11.343  0.000    0.454    0.644
92  Q32 ~~ Q32   0.588 0.052 11.269  0.000    0.485    0.690
93   Q6 ~~  Q6   0.952 0.024 39.567  0.000    0.904    0.999
94  Q15 ~~ Q15   0.557 0.049 11.448  0.000    0.462    0.653
95  Q24 ~~ Q24   0.422 0.048  8.712  0.000    0.327    0.517
96  Q33 ~~ Q33   0.543 0.046 11.756  0.000    0.452    0.634
97   Q7 ~~  Q7   0.377 0.070  5.393  0.000    0.240    0.514
98  Q16 ~~ Q16   0.518 0.064  8.083  0.000    0.392    0.644
99  Q25 ~~ Q25   0.487 0.059  8.306  0.000    0.372    0.602
100 Q34 ~~ Q34   0.706 0.055 12.874  0.000    0.598    0.813
101  Q8 ~~  Q8   0.852 0.044 19.332  0.000    0.766    0.939
102 Q17 ~~ Q17   0.503 0.065  7.780  0.000    0.376    0.630
103 Q26 ~~ Q26   0.411 0.075  5.459  0.000    0.263    0.559
104 Q35 ~~ Q35   0.812 0.049 16.518  0.000    0.715    0.908
105  Q9 ~~  Q9   0.847 0.044 19.330  0.000    0.761    0.933
106 Q18 ~~ Q18   0.805 0.048 16.931  0.000    0.712    0.898
107 Q27 ~~ Q27   0.339 0.053  6.435  0.000    0.236    0.442
108 Q36 ~~ Q36   0.554 0.053 10.376  0.000    0.449    0.659
109 CSB ~~ CSB   1.000 0.000     NA     NA    1.000    1.000
110 MAA ~~ MAA   1.000 0.000     NA     NA    1.000    1.000
111  CG ~~  CG   1.000 0.000     NA     NA    1.000    1.000
 [ reached 'max' / getOption("max.print") -- omitted 6 rows ]
fitMeasures(fit4multi, fit.measures = "all")
                         npar                          fmin                         chisq 
                      108.000                         2.992                      2369.737 
                           df                        pvalue                  chisq.scaled 
                      558.000                         0.000                      2101.827 
                    df.scaled                 pvalue.scaled          chisq.scaling.factor 
                      558.000                         0.000                         1.339 
               baseline.chisq                   baseline.df               baseline.pvalue 
                    14681.305                       630.000                         0.000 
        baseline.chisq.scaled            baseline.df.scaled        baseline.pvalue.scaled 
                     3951.121                       630.000                         0.000 
baseline.chisq.scaling.factor                           cfi                           tli 
                        4.231                         0.871                         0.854 
                         nnfi                           rfi                           nfi 
                        0.854                         0.818                         0.839 
                         pnfi                           ifi                           rni 
                        0.743                         0.872                         0.871 
                   cfi.scaled                    tli.scaled                    cfi.robust 
                        0.535                         0.475                            NA 
                   tli.robust                   nnfi.scaled                   nnfi.robust 
                           NA                         0.475                            NA 
                   rfi.scaled                    nfi.scaled                    ifi.scaled 
                        0.399                         0.468                         0.545 
                   rni.scaled                    rni.robust                         rmsea 
                        0.535                            NA                         0.091 
               rmsea.ci.lower                rmsea.ci.upper                  rmsea.pvalue 
                        0.087                         0.094                         0.000 
                 rmsea.scaled         rmsea.ci.lower.scaled         rmsea.ci.upper.scaled 
                        0.084                         0.080                         0.088 
          rmsea.pvalue.scaled                  rmsea.robust         rmsea.ci.lower.robust 
                        0.000                            NA                            NA 
        rmsea.ci.upper.robust           rmsea.pvalue.robust                           rmr 
                           NA                            NA                         0.116 
                   rmr_nomean                          srmr                  srmr_bentler 
                        0.116                         0.102                         0.102 
          srmr_bentler_nomean                          crmr                   crmr_nomean 
                        0.102                         0.105                         0.105 
                   srmr_mplus             srmr_mplus_nomean                         cn_05 
                        0.102                         0.102                       103.355 
                        cn_01                           gfi                          agfi 
                      107.452                         0.904                         0.886 
                         pgfi                           mfi                          ecvi 
                        0.758                         0.101                         6.546 
moreFitIndices(fit4multi, fit.measures = "all")
Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: number of observations (396) too small to compute Gamma

Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: number of observations (396) too small to compute Gamma

             gammaHat           adjGammaHat        baseline.rmsea       gammaHat.scaled 
            0.7973389             0.7581141             0.2376236             0.8219721 
   adjGammaHat.scaled baseline.rmsea.scaled 
            0.7875151             0.1155243 
library(semPlot)
semPlot::semPaths(
  fit4multi, "std", curvePivot = T, layout = "circle", rotation = 3,
  fade = T, intercepts = T, residuals = T, sizeLat = 4, sizeLat2 = 3, sizeMan = 4,
  esize = 1.5, asize = 1.5, edge.label.position = 0.55, levels = c(9.75,10,10,10))

Internal consistency

library(semTools)
(df <- semTools::reliability(fit4multi))
             CSB       MAA        CG        UF       CTH        SC       LSC        TT        AE
alpha  0.5936267 0.7230577 0.6044585 0.7120178 0.6978117 0.6141302 0.7771464 0.6588516 0.6692618
omega  0.5960418 0.7172051 0.5561393 0.6728345 0.7088657 0.6355154 0.7730813 0.6551928 0.6705276
omega2 0.5960418 0.7172051 0.5561393 0.6728345 0.7088657 0.6355154 0.7730813 0.6551928 0.6705276
omega3 0.5943786 0.6920160 0.5089525 0.6224982 0.7206865 0.6380916 0.7654152 0.6396234 0.6558981
avevar 0.2738922 0.4038477 0.2569347 0.3504330 0.3790097 0.3215411 0.4614085 0.3345737 0.3529141
knitr::kable(df, digits = 3)
CSB MAA CG UF CTH SC LSC TT AE
alpha 0.594 0.723 0.604 0.712 0.698 0.614 0.777 0.659 0.669
omega 0.596 0.717 0.556 0.673 0.709 0.636 0.773 0.655 0.671
omega2 0.596 0.717 0.556 0.673 0.709 0.636 0.773 0.655 0.671
omega3 0.594 0.692 0.509 0.622 0.721 0.638 0.765 0.640 0.656
avevar 0.274 0.404 0.257 0.350 0.379 0.322 0.461 0.335 0.353

Convergent validity and discriminant validity

(df <- convergentDiscriminantValidity(fit4multi, mdl4multi, fss))
           CR       AVE      VIF    VIF.i       CSB       MAA        CG        UF       CTH
CSB 0.6027552 0.2738922 2.110524 1.350265 0.5233471 0.5473725 0.8529059 0.6823664 0.7269748
MAA 0.7200508 0.4038477 1.415515 1.697888 0.5128799 0.6354901 0.4975342 0.3265656 0.5696953
CG  0.5651241 0.2569347 2.244220 1.449625 0.8983002 0.4703605 0.5068872 1.0150820 0.6763847
UF  0.6867922 0.3504330 2.056871 1.792668 0.6721956 0.2513787 0.9366236 0.5919738 0.5541886
CTH 0.7122114 0.3790097 2.100689 1.784923 0.7253034 0.5610349 0.7075834 0.5787399 0.6156376
SC  0.6853803 0.3215411 2.506635 1.619964 0.7967762 0.4301534 0.9459630 0.8335442 0.9357756
LSC 0.7827150 0.4614085 1.489139 1.673296 0.6078765 0.4181676 0.5762290 0.4518117 0.6770441
TT  0.6704641 0.3345737 1.763343 1.495731 0.6168442 0.6535276 0.4688284 0.2320013 0.6457750
AE  0.6778046 0.3529141 2.141595 1.589625 0.8898975 0.6465270 0.5928125 0.3826463 0.6684667
           SC       LSC        TT        AE
CSB 0.8414861 0.6297587 0.6607577 0.9595111
MAA 0.4686285 0.4113716 0.6741444 0.6174888
CG  1.0010753 0.5216722 0.4383197 0.5936177
UF  0.8865678 0.4160803 0.2566063 0.4406559
CTH 0.9823847 0.6880799 0.6205455 0.6408338
SC  0.5670460 0.5810143 0.5335089 0.6588856
LSC 0.5784911 0.6792706 0.4591919 0.5423177
TT  0.5157380 0.4589601 0.5784235 0.8980058
AE  0.5909376 0.5407415 0.8598428 0.5940657
knitr::kable(df, digits = 3)
CR AVE VIF VIF.i CSB MAA CG UF CTH SC LSC TT AE
CSB 0.603 0.274 2.111 1.350 0.523 0.547 0.853 0.682 0.727 0.841 0.630 0.661 0.960
MAA 0.720 0.404 1.416 1.698 0.513 0.635 0.498 0.327 0.570 0.469 0.411 0.674 0.617
CG 0.565 0.257 2.244 1.450 0.898 0.470 0.507 1.015 0.676 1.001 0.522 0.438 0.594
UF 0.687 0.350 2.057 1.793 0.672 0.251 0.937 0.592 0.554 0.887 0.416 0.257 0.441
CTH 0.712 0.379 2.101 1.785 0.725 0.561 0.708 0.579 0.616 0.982 0.688 0.621 0.641
SC 0.685 0.322 2.507 1.620 0.797 0.430 0.946 0.834 0.936 0.567 0.581 0.534 0.659
LSC 0.783 0.461 1.489 1.673 0.608 0.418 0.576 0.452 0.677 0.578 0.679 0.459 0.542
TT 0.670 0.335 1.763 1.496 0.617 0.654 0.469 0.232 0.646 0.516 0.459 0.578 0.898
AE 0.678 0.353 2.142 1.590 0.890 0.647 0.593 0.383 0.668 0.591 0.541 0.860 0.594

Second order model (36 itens and 9 factors)

Structure validity

library(lavaan)

mdl4second <- '
CSB =~ Q1 + Q10 + Q19 + Q28
MAA =~ Q2 + Q11 + Q20 + Q29
CG  =~ Q3 + Q12 + Q21 + Q30
UF  =~ Q4 + Q13 + Q22 + Q31
CTH =~ Q5 + Q14 + Q23 + Q32
SC  =~ Q6 + Q15 + Q24 + Q33
LSC =~ Q7 + Q16 + Q25 + Q34
TT  =~ Q8 + Q17 + Q26 + Q35
AE  =~ Q9 + Q18 + Q27 + Q36

FSS  =~ CSB + MAA + CG + UF + CTH + SC + LSC + TT + AE

CSB ~~ 0*MAA
CSB ~~ 0*CG
CSB ~~ 0*UF
CSB ~~ 0*CTH
CSB ~~ 0*SC
CSB ~~ 0*LSC
CSB ~~ 0*TT
CSB ~~ 0*AE

MAA ~~ 0*CG
MAA ~~ 0*UF
MAA ~~ 0*CTH
MAA ~~ 0*SC
MAA ~~ 0*LSC
MAA ~~ 0*TT
MAA ~~ 0*AE

CG ~~ 0*UF
CG ~~ 0*CTH
CG ~~ 0*SC
CG ~~ 0*LSC
CG ~~ 0*TT
CG ~~ 0*AE

UF ~~ 0*CTH
UF ~~ 0*SC
UF ~~ 0*LSC
UF ~~ 0*TT
UF ~~ 0*AE

CTH ~~ 0*SC
CTH ~~ 0*LSC
CTH ~~ 0*TT
CTH ~~ 0*AE

SC ~~ 0*LSC
SC ~~ 0*TT
SC ~~ 0*AE

LSC ~~ 0*TT
LSC ~~ 0*AE

TT ~~ 0*AE
'

fitMeasures(cfa(mdl4second, data=fss), fit.measures = "all")
               npar                fmin               chisq                  df 
             81.000               4.231            3351.224             585.000 
             pvalue      baseline.chisq         baseline.df     baseline.pvalue 
              0.000            7041.108             630.000               0.000 
                cfi                 tli                nnfi                 rfi 
              0.569               0.535               0.535               0.487 
                nfi                pnfi                 ifi                 rni 
              0.524               0.487               0.572               0.569 
               logl   unrestricted.logl                 aic                 bic 
         -18815.340          -17139.728           37792.679           38115.174 
             ntotal                bic2               rmsea      rmsea.ci.lower 
            396.000           37858.160               0.109               0.106 
     rmsea.ci.upper        rmsea.pvalue                 rmr          rmr_nomean 
              0.113               0.000               0.129               0.129 
               srmr        srmr_bentler srmr_bentler_nomean                crmr 
              0.115               0.115               0.115               0.118 
        crmr_nomean          srmr_mplus   srmr_mplus_nomean               cn_05 
              0.118               0.115               0.115              76.907 
              cn_01                 gfi                agfi                pgfi 
             79.876               0.600               0.544               0.527 
                mfi                ecvi 
              0.030               8.872 
fit4second <-cfa(mdl4second, data=fss, estimator="WLSMV", std.lv=T)
Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: number of observations (396) too small to compute Gamma
standardizedSolution(fit4second)
    lhs op rhs est.std    se      z pvalue ci.lower ci.upper
1   CSB =~  Q1   0.523 0.047 11.183  0.000    0.431    0.615
2   CSB =~ Q10   0.645 0.042 15.304  0.000    0.563    0.728
3   CSB =~ Q19   0.458 0.046 10.072  0.000    0.369    0.548
4   CSB =~ Q28   0.465 0.047  9.962  0.000    0.373    0.556
5   MAA =~  Q2   0.697 0.044 15.665  0.000    0.609    0.784
6   MAA =~ Q11   0.801 0.050 15.939  0.000    0.702    0.899
7   MAA =~ Q20   0.633 0.051 12.530  0.000    0.534    0.732
8   MAA =~ Q29   0.323 0.069  4.718  0.000    0.189    0.458
9    CG =~  Q3   0.433 0.052  8.253  0.000    0.330    0.536
10   CG =~ Q12   0.182 0.062  2.941  0.003    0.061    0.303
11   CG =~ Q21   0.584 0.045 13.079  0.000    0.497    0.672
12   CG =~ Q30   0.700 0.050 14.140  0.000    0.603    0.797
13   UF =~  Q4   0.847 0.047 17.983  0.000    0.755    0.939
14   UF =~ Q13   0.371 0.062  6.025  0.000    0.250    0.492
15   UF =~ Q22   0.415 0.060  6.938  0.000    0.298    0.532
16   UF =~ Q31   0.667 0.049 13.495  0.000    0.570    0.764
17  CTH =~  Q5   0.614 0.042 14.625  0.000    0.532    0.697
18  CTH =~ Q14   0.539 0.044 12.319  0.000    0.453    0.625
19  CTH =~ Q23   0.674 0.036 18.601  0.000    0.603    0.745
20  CTH =~ Q32   0.644 0.041 15.832  0.000    0.564    0.724
21   SC =~  Q6   0.193 0.057  3.376  0.001    0.081    0.305
22   SC =~ Q15   0.661 0.037 17.661  0.000    0.588    0.735
23   SC =~ Q24   0.775 0.033 23.674  0.000    0.711    0.839
24   SC =~ Q33   0.680 0.035 19.603  0.000    0.612    0.748
25  LSC =~  Q7   0.787 0.044 17.764  0.000    0.701    0.874
26  LSC =~ Q16   0.695 0.046 15.032  0.000    0.604    0.785
27  LSC =~ Q25   0.719 0.041 17.532  0.000    0.639    0.799
28  LSC =~ Q34   0.541 0.051 10.674  0.000    0.442    0.640
29   TT =~  Q8   0.379 0.060  6.284  0.000    0.261    0.497
30   TT =~ Q17   0.713 0.048 14.775  0.000    0.619    0.808
31   TT =~ Q26   0.782 0.053 14.826  0.000    0.678    0.885
32   TT =~ Q35   0.407 0.059  6.846  0.000    0.290    0.523
33   AE =~  Q9   0.384 0.059  6.551  0.000    0.269    0.498
34   AE =~ Q18   0.439 0.055  7.920  0.000    0.331    0.548
35   AE =~ Q27   0.830 0.035 23.756  0.000    0.761    0.898
36   AE =~ Q36   0.659 0.042 15.832  0.000    0.578    0.741
37  FSS =~ CSB   0.917 0.038 24.293  0.000    0.843    0.991
38  FSS =~ MAA   0.615 0.061 10.063  0.000    0.495    0.734
39  FSS =~  CG   0.901 0.045 19.950  0.000    0.812    0.989
40  FSS =~  UF   0.674 0.049 13.773  0.000    0.578    0.770
41  FSS =~ CTH   0.900 0.040 22.596  0.000    0.822    0.978
42  FSS =~  SC   0.901 0.028 32.413  0.000    0.847    0.956
43  FSS =~ LSC   0.674 0.048 14.116  0.000    0.580    0.768
44  FSS =~  TT   0.701 0.060 11.740  0.000    0.584    0.818
45  FSS =~  AE   0.811 0.038 21.611  0.000    0.737    0.884
46  CSB ~~ MAA   0.000 0.000     NA     NA    0.000    0.000
47  CSB ~~  CG   0.000 0.000     NA     NA    0.000    0.000
48  CSB ~~  UF   0.000 0.000     NA     NA    0.000    0.000
49  CSB ~~ CTH   0.000 0.000     NA     NA    0.000    0.000
50  CSB ~~  SC   0.000 0.000     NA     NA    0.000    0.000
51  CSB ~~ LSC   0.000 0.000     NA     NA    0.000    0.000
52  CSB ~~  TT   0.000 0.000     NA     NA    0.000    0.000
53  CSB ~~  AE   0.000 0.000     NA     NA    0.000    0.000
54  MAA ~~  CG   0.000 0.000     NA     NA    0.000    0.000
55  MAA ~~  UF   0.000 0.000     NA     NA    0.000    0.000
56  MAA ~~ CTH   0.000 0.000     NA     NA    0.000    0.000
57  MAA ~~  SC   0.000 0.000     NA     NA    0.000    0.000
58  MAA ~~ LSC   0.000 0.000     NA     NA    0.000    0.000
59  MAA ~~  TT   0.000 0.000     NA     NA    0.000    0.000
60  MAA ~~  AE   0.000 0.000     NA     NA    0.000    0.000
61   CG ~~  UF   0.000 0.000     NA     NA    0.000    0.000
62   CG ~~ CTH   0.000 0.000     NA     NA    0.000    0.000
63   CG ~~  SC   0.000 0.000     NA     NA    0.000    0.000
64   CG ~~ LSC   0.000 0.000     NA     NA    0.000    0.000
65   CG ~~  TT   0.000 0.000     NA     NA    0.000    0.000
66   CG ~~  AE   0.000 0.000     NA     NA    0.000    0.000
67   UF ~~ CTH   0.000 0.000     NA     NA    0.000    0.000
68   UF ~~  SC   0.000 0.000     NA     NA    0.000    0.000
69   UF ~~ LSC   0.000 0.000     NA     NA    0.000    0.000
70   UF ~~  TT   0.000 0.000     NA     NA    0.000    0.000
71   UF ~~  AE   0.000 0.000     NA     NA    0.000    0.000
72  CTH ~~  SC   0.000 0.000     NA     NA    0.000    0.000
73  CTH ~~ LSC   0.000 0.000     NA     NA    0.000    0.000
74  CTH ~~  TT   0.000 0.000     NA     NA    0.000    0.000
75  CTH ~~  AE   0.000 0.000     NA     NA    0.000    0.000
76   SC ~~ LSC   0.000 0.000     NA     NA    0.000    0.000
77   SC ~~  TT   0.000 0.000     NA     NA    0.000    0.000
78   SC ~~  AE   0.000 0.000     NA     NA    0.000    0.000
79  LSC ~~  TT   0.000 0.000     NA     NA    0.000    0.000
80  LSC ~~  AE   0.000 0.000     NA     NA    0.000    0.000
81   TT ~~  AE   0.000 0.000     NA     NA    0.000    0.000
82   Q1 ~~  Q1   0.726 0.049 14.849  0.000    0.631    0.822
83  Q10 ~~ Q10   0.584 0.054 10.726  0.000    0.477    0.690
84  Q19 ~~ Q19   0.790 0.042 18.921  0.000    0.708    0.872
85  Q28 ~~ Q28   0.784 0.043 18.079  0.000    0.699    0.869
86   Q2 ~~  Q2   0.515 0.062  8.306  0.000    0.393    0.636
87  Q11 ~~ Q11   0.359 0.080  4.454  0.000    0.201    0.516
88  Q20 ~~ Q20   0.599 0.064  9.369  0.000    0.474    0.725
89  Q29 ~~ Q29   0.896 0.044 20.217  0.000    0.809    0.982
90   Q3 ~~  Q3   0.813 0.045 17.896  0.000    0.724    0.902
91  Q12 ~~ Q12   0.967 0.022 43.152  0.000    0.923    1.011
92  Q21 ~~ Q21   0.659 0.052 12.619  0.000    0.556    0.761
93  Q30 ~~ Q30   0.510 0.069  7.349  0.000    0.374    0.646
94   Q4 ~~  Q4   0.283 0.080  3.540  0.000    0.126    0.439
95  Q13 ~~ Q13   0.862 0.046 18.880  0.000    0.773    0.952
96  Q22 ~~ Q22   0.828 0.050 16.662  0.000    0.730    0.925
97  Q31 ~~ Q31   0.555 0.066  8.403  0.000    0.425    0.684
98   Q5 ~~  Q5   0.623 0.052 12.058  0.000    0.521    0.724
99  Q14 ~~ Q14   0.709 0.047 15.043  0.000    0.617    0.802
100 Q23 ~~ Q23   0.546 0.049 11.185  0.000    0.450    0.642
101 Q32 ~~ Q32   0.585 0.052 11.167  0.000    0.482    0.688
102  Q6 ~~  Q6   0.963 0.022 43.791  0.000    0.920    1.006
103 Q15 ~~ Q15   0.562 0.050 11.353  0.000    0.465    0.660
104 Q24 ~~ Q24   0.400 0.051  7.888  0.000    0.301    0.499
105 Q33 ~~ Q33   0.538 0.047 11.395  0.000    0.445    0.630
106  Q7 ~~  Q7   0.380 0.070  5.440  0.000    0.243    0.517
107 Q16 ~~ Q16   0.517 0.064  8.057  0.000    0.392    0.643
108 Q25 ~~ Q25   0.483 0.059  8.192  0.000    0.368    0.599
109 Q34 ~~ Q34   0.708 0.055 12.910  0.000    0.600    0.815
110  Q8 ~~  Q8   0.856 0.046 18.737  0.000    0.767    0.946
111 Q17 ~~ Q17   0.491 0.069  7.137  0.000    0.356    0.626
 [ reached 'max' / getOption("max.print") -- omitted 16 rows ]
fitMeasures(fit4second, fit.measures = "all")
                         npar                          fmin                         chisq 
                       81.000                         3.499                      2771.034 
                           df                        pvalue                  chisq.scaled 
                      585.000                         0.000                      2149.296 
                    df.scaled                 pvalue.scaled          chisq.scaling.factor 
                      585.000                         0.000                         1.551 
               baseline.chisq                   baseline.df               baseline.pvalue 
                    14681.305                       630.000                         0.000 
        baseline.chisq.scaled            baseline.df.scaled        baseline.pvalue.scaled 
                     3951.121                       630.000                         0.000 
baseline.chisq.scaling.factor                           cfi                           tli 
                        4.231                         0.844                         0.832 
                         nnfi                           rfi                           nfi 
                        0.832                         0.797                         0.811 
                         pnfi                           ifi                           rni 
                        0.753                         0.845                         0.844 
                   cfi.scaled                    tli.scaled                    cfi.robust 
                        0.529                         0.493                            NA 
                   tli.robust                   nnfi.scaled                   nnfi.robust 
                           NA                         0.493                            NA 
                   rfi.scaled                    nfi.scaled                    ifi.scaled 
                        0.414                         0.456                         0.535 
                   rni.scaled                    rni.robust                         rmsea 
                        0.529                            NA                         0.097 
               rmsea.ci.lower                rmsea.ci.upper                  rmsea.pvalue 
                        0.094                         0.101                         0.000 
                 rmsea.scaled         rmsea.ci.lower.scaled         rmsea.ci.upper.scaled 
                        0.082                         0.079                         0.086 
          rmsea.pvalue.scaled                  rmsea.robust         rmsea.ci.lower.robust 
                        0.000                            NA                            NA 
        rmsea.ci.upper.robust           rmsea.pvalue.robust                           rmr 
                           NA                            NA                         0.125 
                   rmr_nomean                          srmr                  srmr_bentler 
                        0.125                         0.111                         0.111 
          srmr_bentler_nomean                          crmr                   crmr_nomean 
                        0.111                         0.114                         0.114 
                   srmr_mplus             srmr_mplus_nomean                         cn_05 
                        0.111                         0.111                        92.568 
                        cn_01                           gfi                          agfi 
                       96.150                         0.888                         0.873 
                         pgfi                           mfi                          ecvi 
                        0.780                         0.063                         7.425 
moreFitIndices(fit4second, fit.measures = "all")
Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: number of observations (396) too small to compute Gamma

Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: number of observations (396) too small to compute Gamma

             gammaHat           adjGammaHat        baseline.rmsea       gammaHat.scaled 
            0.7652967             0.7327993             0.2376236             0.8200365 
   adjGammaHat.scaled baseline.rmsea.scaled 
            0.7951185             0.1155243 
library(semPlot)
semPlot::semPaths(
  fit4second, "std", curvePivot = T, layout = "tree", rotation = 1,
  fade = T, intercepts = T, residuals = T, esize = 1.5, asize = 1.5,
  sizeLat = 4, sizeMan = 2, sizeMan2 = 4, sizeInt = 6, sizeInt2 = 12)

Internal consistency

library(semTools)
semTools::reliabilityL2(fit4second, "FSS")
       omegaL1        omegaL2 partialOmegaL1 
     0.8576015      0.9528720      0.9161821 
(df <- semTools::reliability(fit4second, return.total = T))
             CSB       MAA        CG        UF       CTH        SC       LSC        TT        AE
alpha  0.5936267 0.7230577 0.6044585 0.7120178 0.6978117 0.6141302 0.7771464 0.6588516 0.6692618
omega  0.5954992 0.7146745 0.5397522 0.6598326 0.7091786 0.6311211 0.7729580 0.6528319 0.6703087
omega2 0.5954992 0.7146745 0.5397522 0.6598326 0.7091786 0.6311211 0.7729580 0.6528319 0.6703087
omega3 0.5931738 0.6841776 0.4792408 0.5930998 0.7212836 0.6259358 0.7651055 0.6326085 0.6541159
avevar 0.2737284 0.4032213 0.2524549 0.3438343 0.3794386 0.3217542 0.4612470 0.3349686 0.3540319
           total
alpha  0.9064489
omega  0.9215414
omega2 0.9215414
omega3 0.9042825
avevar 0.3515626
knitr::kable(df, digits = 3)
CSB MAA CG UF CTH SC LSC TT AE total
alpha 0.594 0.723 0.604 0.712 0.698 0.614 0.777 0.659 0.669 0.906
omega 0.595 0.715 0.540 0.660 0.709 0.631 0.773 0.653 0.670 0.922
omega2 0.595 0.715 0.540 0.660 0.709 0.631 0.773 0.653 0.670 0.922
omega3 0.593 0.684 0.479 0.593 0.721 0.626 0.765 0.633 0.654 0.904
avevar 0.274 0.403 0.252 0.344 0.379 0.322 0.461 0.335 0.354 0.352

Convergent validity and discriminant validity

(df <- convergentDiscriminantValidity(fit4second, mdl4second, fss, "FSS"))
Warning in cbind(CR, AVE, VIF, VIF.i, df): number of rows of result is not a multiple of vector
length (arg 3)

           CR       AVE      VIF    VIF.i       CSB       MAA        CG        UF       CTH
CSB 0.6026789 0.2737284 2.110524 1.350265 0.5231906 0.5473725 0.8529059 0.6823664 0.7269748
MAA 0.7177382 0.4032213 1.415515 1.697888 0.5636998 0.6349971 0.4975342 0.3265656 0.5696953
CG  0.5501836 0.2524549 2.244220 1.449625 0.8261945 0.5536503 0.5024489 1.0150820 0.6763847
UF  0.6767978 0.3438343 2.056871 1.792668 0.6178836 0.4140567 0.6068680 0.5863739 0.5541886
CTH 0.7125909 0.3794386 2.100689 1.784923 0.8255545 0.5532214 0.8108366 0.6063979 0.6159859
SC  0.6839725 0.3217542 2.506635 1.619964 0.8264220 0.5538027 0.8116886 0.6070351 0.8110599
LSC 0.7826656 0.4612470 1.489139 1.673296 0.6181269 0.4142198 0.6071071 0.4540353 0.6066368
TT  0.6691425 0.3349686 1.763343 1.495731 0.6428811 0.4308081 0.6314199 0.4722181 0.6309308
AE  0.6781292 0.3540319 2.141595 1.589625 0.7433918 0.4981625 0.7301387 0.5460466 0.7295731
FSS 0.9385987 0.3515626 2.110524 1.350265 0.9171647 0.6146113 0.9008136 0.6736887 0.9001158
           SC       LSC        TT        AE       FSS
CSB 0.8414861 0.6297587 0.6607577 0.9595111        NA
MAA 0.4686285 0.4113716 0.6741444 0.6174888        NA
CG  1.0010753 0.5216722 0.4383197 0.5936177        NA
UF  0.8865678 0.4160803 0.2566063 0.4406559        NA
CTH 0.9823847 0.6880799 0.6205455 0.6408338        NA
SC  0.5672338 0.5810143 0.5335089 0.6588856        NA
LSC 0.6072742 0.6791517 0.4591919 0.5423177        NA
TT  0.6315938 0.4724041 0.5787647 0.8980058        NA
AE  0.7303398 0.5462617 0.5681379 0.5950058        NA
FSS 0.9010617 0.6739541 0.7009440 0.8105325 0.5929271
knitr::kable(df, digits = 3)
CR AVE VIF VIF.i CSB MAA CG UF CTH SC LSC TT AE FSS
CSB 0.603 0.274 2.111 1.350 0.523 0.547 0.853 0.682 0.727 0.841 0.630 0.661 0.960 NA
MAA 0.718 0.403 1.416 1.698 0.564 0.635 0.498 0.327 0.570 0.469 0.411 0.674 0.617 NA
CG 0.550 0.252 2.244 1.450 0.826 0.554 0.502 1.015 0.676 1.001 0.522 0.438 0.594 NA
UF 0.677 0.344 2.057 1.793 0.618 0.414 0.607 0.586 0.554 0.887 0.416 0.257 0.441 NA
CTH 0.713 0.379 2.101 1.785 0.826 0.553 0.811 0.606 0.616 0.982 0.688 0.621 0.641 NA
SC 0.684 0.322 2.507 1.620 0.826 0.554 0.812 0.607 0.811 0.567 0.581 0.534 0.659 NA
LSC 0.783 0.461 1.489 1.673 0.618 0.414 0.607 0.454 0.607 0.607 0.679 0.459 0.542 NA
TT 0.669 0.335 1.763 1.496 0.643 0.431 0.631 0.472 0.631 0.632 0.472 0.579 0.898 NA
AE 0.678 0.354 2.142 1.590 0.743 0.498 0.730 0.546 0.730 0.730 0.546 0.568 0.595 NA
FSS 0.939 0.352 2.111 1.350 0.917 0.615 0.901 0.674 0.900 0.901 0.674 0.701 0.811 0.593

Summarizing assessment model fits

(df <- summariseFits(list('9-multi model(36 items)'=fit4multi,
                          '2nd-order model (36 items)'=fit4second)))
                           chisq    df  chisq/df gfi   agfi  cfi   tli   srmr  rmsea
9-multi model(36 items)    2369.737 558 4.247    0.904 0.886 0.871 0.854 0.102 0.091
2nd-order model (36 items) 2771.034 585 4.737    0.888 0.873 0.844 0.832 0.111 0.097
                           rmsea.ci        
9-multi model(36 items)    "[0.087; 0.094]"
2nd-order model (36 items) "[0.094; 0.101]"
knitr::kable(df, digits = 3)
chisq df chisq/df gfi agfi cfi tli srmr rmsea rmsea.ci
9-multi model(36 items) 2369.737 558 4.247 0.904 0.886 0.871 0.854 0.102 0.091 [0.087; 0.094]
2nd-order model (36 items) 2771.034 585 4.737 0.888 0.873 0.844 0.832 0.111 0.097 [0.094; 0.101]

IRT on the FSS-BR (36 itens and 9 factors - original version)

library(mirt)
mirt4mult <- mirt(fss, 1, itemtype='graded')
Iteration: 1, Log-Lik: -18440.765, Max-Change: 1.45623Iteration: 2, Log-Lik: -18219.381, Max-Change: 0.43701Iteration: 3, Log-Lik: -18192.163, Max-Change: 0.15387Iteration: 4, Log-Lik: -18185.794, Max-Change: 0.14540Iteration: 5, Log-Lik: -18182.827, Max-Change: 0.07083Iteration: 6, Log-Lik: -18180.951, Max-Change: 0.04134Iteration: 7, Log-Lik: -18178.833, Max-Change: 0.02731Iteration: 8, Log-Lik: -18178.197, Max-Change: 0.02398Iteration: 9, Log-Lik: -18177.718, Max-Change: 0.02040Iteration: 10, Log-Lik: -18176.636, Max-Change: 0.01143Iteration: 11, Log-Lik: -18176.565, Max-Change: 0.00766Iteration: 12, Log-Lik: -18176.518, Max-Change: 0.00657Iteration: 13, Log-Lik: -18176.419, Max-Change: 0.01042Iteration: 14, Log-Lik: -18176.401, Max-Change: 0.00265Iteration: 15, Log-Lik: -18176.395, Max-Change: 0.00183Iteration: 16, Log-Lik: -18176.386, Max-Change: 0.00233Iteration: 17, Log-Lik: -18176.383, Max-Change: 0.00300Iteration: 18, Log-Lik: -18176.380, Max-Change: 0.00070Iteration: 19, Log-Lik: -18176.380, Max-Change: 0.00080Iteration: 20, Log-Lik: -18176.378, Max-Change: 0.00103Iteration: 21, Log-Lik: -18176.378, Max-Change: 0.00093Iteration: 22, Log-Lik: -18176.377, Max-Change: 0.00131Iteration: 23, Log-Lik: -18176.377, Max-Change: 0.00039Iteration: 24, Log-Lik: -18176.377, Max-Change: 0.00098Iteration: 25, Log-Lik: -18176.377, Max-Change: 0.00165Iteration: 26, Log-Lik: -18176.376, Max-Change: 0.00033Iteration: 27, Log-Lik: -18176.376, Max-Change: 0.00083Iteration: 28, Log-Lik: -18176.376, Max-Change: 0.00041Iteration: 29, Log-Lik: -18176.376, Max-Change: 0.00103Iteration: 30, Log-Lik: -18176.375, Max-Change: 0.00031Iteration: 31, Log-Lik: -18176.375, Max-Change: 0.00027Iteration: 32, Log-Lik: -18176.375, Max-Change: 0.00069Iteration: 33, Log-Lik: -18176.375, Max-Change: 0.00102Iteration: 34, Log-Lik: -18176.375, Max-Change: 0.00081Iteration: 35, Log-Lik: -18176.375, Max-Change: 0.00024Iteration: 36, Log-Lik: -18176.375, Max-Change: 0.00061Iteration: 37, Log-Lik: -18176.375, Max-Change: 0.00030Iteration: 38, Log-Lik: -18176.375, Max-Change: 0.00076Iteration: 39, Log-Lik: -18176.375, Max-Change: 0.00023Iteration: 40, Log-Lik: -18176.375, Max-Change: 0.00020Iteration: 41, Log-Lik: -18176.375, Max-Change: 0.00051Iteration: 42, Log-Lik: -18176.375, Max-Change: 0.00075Iteration: 43, Log-Lik: -18176.375, Max-Change: 0.00060Iteration: 44, Log-Lik: -18176.375, Max-Change: 0.00018Iteration: 45, Log-Lik: -18176.375, Max-Change: 0.00045Iteration: 46, Log-Lik: -18176.375, Max-Change: 0.00022Iteration: 47, Log-Lik: -18176.374, Max-Change: 0.00056Iteration: 48, Log-Lik: -18176.374, Max-Change: 0.00017Iteration: 49, Log-Lik: -18176.374, Max-Change: 0.00074Iteration: 50, Log-Lik: -18176.374, Max-Change: 0.00022Iteration: 51, Log-Lik: -18176.374, Max-Change: 0.00055Iteration: 52, Log-Lik: -18176.374, Max-Change: 0.00029Iteration: 53, Log-Lik: -18176.374, Max-Change: 0.00074Iteration: 54, Log-Lik: -18176.374, Max-Change: 0.00022Iteration: 55, Log-Lik: -18176.374, Max-Change: 0.00019Iteration: 56, Log-Lik: -18176.374, Max-Change: 0.00049Iteration: 57, Log-Lik: -18176.374, Max-Change: 0.00015Iteration: 58, Log-Lik: -18176.374, Max-Change: 0.00064Iteration: 59, Log-Lik: -18176.374, Max-Change: 0.00019Iteration: 60, Log-Lik: -18176.374, Max-Change: 0.00048Iteration: 61, Log-Lik: -18176.374, Max-Change: 0.00025Iteration: 62, Log-Lik: -18176.374, Max-Change: 0.00064Iteration: 63, Log-Lik: -18176.374, Max-Change: 0.00019Iteration: 64, Log-Lik: -18176.374, Max-Change: 0.00017Iteration: 65, Log-Lik: -18176.374, Max-Change: 0.00043Iteration: 66, Log-Lik: -18176.374, Max-Change: 0.00063Iteration: 67, Log-Lik: -18176.374, Max-Change: 0.00043Iteration: 68, Log-Lik: -18176.374, Max-Change: 0.00013Iteration: 69, Log-Lik: -18176.374, Max-Change: 0.00033Iteration: 70, Log-Lik: -18176.374, Max-Change: 0.00016Iteration: 71, Log-Lik: -18176.374, Max-Change: 0.00041Iteration: 72, Log-Lik: -18176.374, Max-Change: 0.00012Iteration: 73, Log-Lik: -18176.374, Max-Change: 0.00054Iteration: 74, Log-Lik: -18176.374, Max-Change: 0.00016Iteration: 75, Log-Lik: -18176.374, Max-Change: 0.00040Iteration: 76, Log-Lik: -18176.374, Max-Change: 0.00021Iteration: 77, Log-Lik: -18176.374, Max-Change: 0.00054Iteration: 78, Log-Lik: -18176.374, Max-Change: 0.00016Iteration: 79, Log-Lik: -18176.374, Max-Change: 0.00014Iteration: 80, Log-Lik: -18176.374, Max-Change: 0.00036Iteration: 81, Log-Lik: -18176.374, Max-Change: 0.00053Iteration: 82, Log-Lik: -18176.374, Max-Change: 0.00037Iteration: 83, Log-Lik: -18176.374, Max-Change: 0.00011Iteration: 84, Log-Lik: -18176.374, Max-Change: 0.00028Iteration: 85, Log-Lik: -18176.374, Max-Change: 0.00014Iteration: 86, Log-Lik: -18176.374, Max-Change: 0.00035Iteration: 87, Log-Lik: -18176.374, Max-Change: 0.00051Iteration: 88, Log-Lik: -18176.374, Max-Change: 0.00035Iteration: 89, Log-Lik: -18176.374, Max-Change: 0.00010Iteration: 90, Log-Lik: -18176.374, Max-Change: 0.00027Iteration: 91, Log-Lik: -18176.374, Max-Change: 0.00013Iteration: 92, Log-Lik: -18176.374, Max-Change: 0.00033Iteration: 93, Log-Lik: -18176.374, Max-Change: 0.00049Iteration: 94, Log-Lik: -18176.374, Max-Change: 0.00033Iteration: 95, Log-Lik: -18176.374, Max-Change: 0.00010
(param4mult <- coef(mirt4mult, simplify=T, IRTpars=T))
$items
        a     b1     b2     b3    b4
Q1  1.296 -3.883 -2.631 -1.334 1.006
Q2  1.144 -2.481 -0.945  0.079 2.070
Q3  0.871 -4.775 -1.522  0.140 2.827
Q4  1.839 -3.017 -1.684 -0.583 1.262
Q5  1.429 -3.235 -1.440 -0.308 1.568
Q6  0.449 -4.835 -1.601  0.112 4.494
Q7  1.421 -2.916 -1.370 -0.331 1.560
Q8  0.535 -3.869 -1.515  0.855 3.801
Q9  0.742 -4.466 -2.392 -0.426 2.485
Q10 1.630 -2.987 -1.734 -0.560 0.809
Q11 1.408 -2.827 -1.232 -0.172 1.666
Q12 0.365 -7.800 -2.156  1.218 7.040
Q13 0.542 -6.455 -1.843  0.640 4.863
Q14 1.370 -2.524 -1.398 -0.617 1.235
Q15 1.725 -3.289 -1.569 -0.439 1.374
Q16 1.174 -2.909 -0.954 -0.068 1.674
Q17 1.353 -2.874 -1.133  0.103 2.049
Q18 0.769 -3.475 -1.108  0.785 3.352
Q19 0.945 -4.147 -1.984 -0.412 1.840
Q20 1.080 -3.355 -1.579 -0.366 1.337
Q21 1.334 -3.008 -1.399  0.059 1.969
Q22 0.673 -5.290 -1.548  0.016 3.953
Q23 1.668 -2.775 -1.341 -0.263 1.436
Q24 2.405 -3.047 -1.417 -0.432 1.078
Q25 1.319 -3.116 -1.181 -0.166 1.911
Q26 1.466 -2.547 -1.070 -0.046 1.752
Q27 2.021 -2.426 -1.238 -0.101 1.434
Q28 0.892 -3.345 -1.202  0.366 2.067
Q29 0.456 -5.829 -1.428  1.049 5.106
Q30 1.879 -3.270 -1.643 -0.640 0.738
Q31 1.074 -4.706 -1.941 -0.453 2.022
Q32 1.591 -2.936 -1.332 -0.565 1.072
Q33 1.815 -3.381 -1.637 -0.609 1.399
Q34 0.763 -3.490 -1.457 -0.257 1.862
Q35 0.636 -4.230 -1.782  0.233 2.971
Q36 1.383 -3.323 -1.801 -0.686 0.656

$means
F1 
 0 

$cov
   F1
F1  1
library(matrixStats)
df <- data.frame(param4mult$items)
df <- cbind(df, bx = matrixStats::rowMeans2(as.matrix(df), cols = c(2,3,4,5)))
df <- rbind(df, M = colMeans(df))
df <- rbind(df, SD = matrixStats::colSds(as.matrix(df)))
knitr::kable(df, digits = 3)
a b1 b2 b3 b4 bx
Q1 1.296 -3.883 -2.631 -1.334 1.006 -1.711
Q2 1.144 -2.481 -0.945 0.079 2.070 -0.319
Q3 0.871 -4.775 -1.522 0.140 2.827 -0.833
Q4 1.839 -3.017 -1.684 -0.583 1.262 -1.006
Q5 1.429 -3.235 -1.440 -0.308 1.568 -0.854
Q6 0.449 -4.835 -1.601 0.112 4.494 -0.457
Q7 1.421 -2.916 -1.370 -0.331 1.560 -0.764
Q8 0.535 -3.869 -1.515 0.855 3.801 -0.182
Q9 0.742 -4.466 -2.392 -0.426 2.485 -1.200
Q10 1.630 -2.987 -1.734 -0.560 0.809 -1.118
Q11 1.408 -2.827 -1.232 -0.172 1.666 -0.641
Q12 0.365 -7.800 -2.156 1.218 7.040 -0.424
Q13 0.542 -6.455 -1.843 0.640 4.863 -0.699
Q14 1.370 -2.524 -1.398 -0.617 1.235 -0.826
Q15 1.725 -3.289 -1.569 -0.439 1.374 -0.981
Q16 1.174 -2.909 -0.954 -0.068 1.674 -0.564
Q17 1.353 -2.874 -1.133 0.103 2.049 -0.464
Q18 0.769 -3.475 -1.108 0.785 3.352 -0.112
Q19 0.945 -4.147 -1.984 -0.412 1.840 -1.176
Q20 1.080 -3.355 -1.579 -0.366 1.337 -0.991
Q21 1.334 -3.008 -1.399 0.059 1.969 -0.595
Q22 0.673 -5.290 -1.548 0.016 3.953 -0.717
Q23 1.668 -2.775 -1.341 -0.263 1.436 -0.736
Q24 2.405 -3.047 -1.417 -0.432 1.078 -0.955
Q25 1.319 -3.116 -1.181 -0.166 1.911 -0.638
Q26 1.466 -2.547 -1.070 -0.046 1.752 -0.478
Q27 2.021 -2.426 -1.238 -0.101 1.434 -0.583
Q28 0.892 -3.345 -1.202 0.366 2.067 -0.529
Q29 0.456 -5.829 -1.428 1.049 5.106 -0.275
Q30 1.879 -3.270 -1.643 -0.640 0.738 -1.204
Q31 1.074 -4.706 -1.941 -0.453 2.022 -1.269
Q32 1.591 -2.936 -1.332 -0.565 1.072 -0.940
Q33 1.815 -3.381 -1.637 -0.609 1.399 -1.057
Q34 0.763 -3.490 -1.457 -0.257 1.862 -0.836
Q35 0.636 -4.230 -1.782 0.233 2.971 -0.702
Q36 1.383 -3.323 -1.801 -0.686 0.656 -1.288
M 1.207 -3.690 -1.534 -0.116 2.215 -0.781
SD 0.492 1.171 0.367 0.526 1.392 0.342
plot(mirt4mult, type='infotrace')

plot(mirt4mult, type='info')

plot(mirt4mult, type='infoSE')

Unidimensional short model of FSS (original)

Structure validity

library(lavaan)
mdl4uni <- 'FSS =~ Q19 + Q29 + Q12 + Q22 + Q32 + Q6 + Q7 + Q17 + Q36'
fss.df <- fss[,c("Q19","Q29","Q12","Q22","Q32","Q6","Q7","Q17","Q36")]

fitMeasures(cfa(mdl4uni, fss.df), fit.measures = "all")
               npar                fmin               chisq                  df 
             18.000               0.391             309.972              27.000 
             pvalue      baseline.chisq         baseline.df     baseline.pvalue 
              0.000             602.091              36.000               0.000 
                cfi                 tli                nnfi                 rfi 
              0.500               0.334               0.334               0.314 
                nfi                pnfi                 ifi                 rni 
              0.485               0.364               0.508               0.500 
               logl   unrestricted.logl                 aic                 bic 
          -5122.014           -4967.027           10280.027           10351.693 
             ntotal                bic2               rmsea      rmsea.ci.lower 
            396.000           10294.578               0.163               0.147 
     rmsea.ci.upper        rmsea.pvalue                 rmr          rmr_nomean 
              0.179               0.000               0.152               0.152 
               srmr        srmr_bentler srmr_bentler_nomean                crmr 
              0.139               0.139               0.139               0.155 
        crmr_nomean          srmr_mplus   srmr_mplus_nomean               cn_05 
              0.155               0.139               0.139              52.246 
              cn_01                 gfi                agfi                pgfi 
             60.997               0.822               0.704               0.493 
                mfi                ecvi 
              0.700               0.874 
fit4uni <- cfa(mdl4uni, data=fss.df, estimator="WLSMV", std.lv=T)
standardizedSolution(fit4uni)
   lhs op rhs est.std    se       z pvalue ci.lower ci.upper
1  FSS =~ Q19   0.516 0.049  10.526  0.000    0.420    0.612
2  FSS =~ Q29   0.146 0.069   2.113  0.035    0.011    0.281
3  FSS =~ Q12   0.605 0.050  12.043  0.000    0.506    0.703
4  FSS =~ Q22   0.699 0.048  14.472  0.000    0.604    0.794
5  FSS =~ Q32   0.180 0.056   3.205  0.001    0.070    0.290
6  FSS =~  Q6   0.519 0.051  10.173  0.000    0.419    0.619
7  FSS =~  Q7   0.339 0.061   5.545  0.000    0.219    0.459
8  FSS =~ Q17   0.091 0.070   1.289  0.198   -0.047    0.228
9  FSS =~ Q36   0.039 0.058   0.675  0.500   -0.075    0.153
10 Q19 ~~ Q19   0.734 0.051  14.502  0.000    0.635    0.833
11 Q29 ~~ Q29   0.979 0.020  48.744  0.000    0.939    1.018
12 Q12 ~~ Q12   0.634 0.061  10.437  0.000    0.515    0.753
13 Q22 ~~ Q22   0.511 0.068   7.572  0.000    0.379    0.644
14 Q32 ~~ Q32   0.968 0.020  48.026  0.000    0.928    1.007
15  Q6 ~~  Q6   0.731 0.053  13.807  0.000    0.627    0.835
16  Q7 ~~  Q7   0.885 0.041  21.359  0.000    0.804    0.966
17 Q17 ~~ Q17   0.992 0.013  77.980  0.000    0.967    1.017
18 Q36 ~~ Q36   0.998 0.005 219.315  0.000    0.990    1.007
19 FSS ~~ FSS   1.000 0.000      NA     NA    1.000    1.000
fitMeasures(fit4uni, fit.measures = "all")
                         npar                          fmin                         chisq 
                       18.000                         0.386                       305.503 
                           df                        pvalue                  chisq.scaled 
                       27.000                         0.000                       344.051 
                    df.scaled                 pvalue.scaled          chisq.scaling.factor 
                       27.000                         0.000                         0.903 
               baseline.chisq                   baseline.df               baseline.pvalue 
                      639.744                        36.000                         0.000 
        baseline.chisq.scaled            baseline.df.scaled        baseline.pvalue.scaled 
                      460.266                        36.000                         0.000 
baseline.chisq.scaling.factor                           cfi                           tli 
                        1.423                         0.539                         0.385 
                         nnfi                           rfi                           nfi 
                        0.385                         0.363                         0.522 
                         pnfi                           ifi                           rni 
                        0.392                         0.545                         0.539 
                   cfi.scaled                    tli.scaled                    cfi.robust 
                        0.253                         0.004                            NA 
                   tli.robust                   nnfi.scaled                   nnfi.robust 
                           NA                         0.004                            NA 
                   rfi.scaled                    nfi.scaled                    ifi.scaled 
                        0.003                         0.252                         0.268 
                   rni.scaled                    rni.robust                         rmsea 
                        0.253                            NA                         0.162 
               rmsea.ci.lower                rmsea.ci.upper                  rmsea.pvalue 
                        0.146                         0.178                         0.000 
                 rmsea.scaled         rmsea.ci.lower.scaled         rmsea.ci.upper.scaled 
                        0.172                         0.156                         0.189 
          rmsea.pvalue.scaled                  rmsea.robust         rmsea.ci.lower.robust 
                        0.000                            NA                            NA 
        rmsea.ci.upper.robust           rmsea.pvalue.robust                           rmr 
                           NA                            NA                         0.152 
                   rmr_nomean                          srmr                  srmr_bentler 
                        0.152                         0.137                         0.137 
          srmr_bentler_nomean                          crmr                   crmr_nomean 
                        0.137                         0.153                         0.153 
                   srmr_mplus             srmr_mplus_nomean                         cn_05 
                        0.137                         0.137                        52.864 
                        cn_01                           gfi                          agfi 
                       61.721                         0.910                         0.849 
                         pgfi                           mfi                          ecvi 
                        0.546                         0.703                         0.865 
moreFitIndices(fit4uni)
             gammaHat           adjGammaHat        baseline.rmsea       gammaHat.scaled 
            0.8648375             0.7747292             0.2060519             0.8489549 
   adjGammaHat.scaled baseline.rmsea.scaled 
            0.7482582             0.1727307 
library(semPlot)
semPlot::semPaths(
  fit4uni, "std", curvePivot = T, layout = "circle",
  rotation = 3, fade = T, intercepts = T, residuals = T,
  sizeLat = 4, sizeLat2 = 3, sizeMan = 4, esize = 1.5, asize = 1.5,
  edge.label.position = 0.55, levels = c(9.75,10,10,10))

Internal consistency

library(semTools)
(df <- semTools::reliability(fit4uni))
             FSS
alpha  0.6029174
omega  0.5696327
omega2 0.5696327
omega3 0.5070341
avevar 0.1745423
knitr::kable(df, digits = 3)
FSS
alpha 0.603
omega 0.570
omega2 0.570
omega3 0.507
avevar 0.175

Unidimensional short alternative model (FSS-short)

Structure validity

library(lavaan)
mdl4alt <- 'FSS =~ Q10 + Q11 + Q30 + Q4 + Q23 + Q24 + Q7 + Q26 + Q27'
fss.df <- fss[,c("Q10","Q11","Q30","Q4","Q23","Q24","Q7","Q26","Q27")]

fitMeasures(cfa(mdl4alt, fss.df), fit.measures = "all")
               npar                fmin               chisq                  df 
             18.000               0.177             140.536              27.000 
             pvalue      baseline.chisq         baseline.df     baseline.pvalue 
              0.000            1123.431              36.000               0.000 
                cfi                 tli                nnfi                 rfi 
              0.896               0.861               0.861               0.833 
                nfi                pnfi                 ifi                 rni 
              0.875               0.656               0.896               0.896 
               logl   unrestricted.logl                 aic                 bic 
          -4501.450           -4431.182            9038.899            9110.565 
             ntotal                bic2               rmsea      rmsea.ci.lower 
            396.000            9053.450               0.103               0.087 
     rmsea.ci.upper        rmsea.pvalue                 rmr          rmr_nomean 
              0.120               0.000               0.053               0.053 
               srmr        srmr_bentler srmr_bentler_nomean                crmr 
              0.055               0.055               0.055               0.061 
        crmr_nomean          srmr_mplus   srmr_mplus_nomean               cn_05 
              0.061               0.055               0.055             114.030 
              cn_01                 gfi                agfi                pgfi 
            133.331               0.921               0.869               0.553 
                mfi                ecvi 
              0.866               0.446 
fit4alt <-cfa(mdl4alt, data=fss.df, estimator="WLSMV", std.lv=T)
standardizedSolution(fit4alt)
   lhs op rhs est.std    se      z pvalue ci.lower ci.upper
1  FSS =~ Q10   0.570 0.041 13.770      0    0.489    0.651
2  FSS =~ Q11   0.511 0.047 10.870      0    0.419    0.603
3  FSS =~ Q30   0.633 0.039 16.239      0    0.557    0.710
4  FSS =~  Q4   0.608 0.038 16.162      0    0.534    0.681
5  FSS =~ Q23   0.650 0.035 18.378      0    0.580    0.719
6  FSS =~ Q24   0.751 0.027 27.479      0    0.698    0.805
7  FSS =~  Q7   0.488 0.047 10.401      0    0.396    0.580
8  FSS =~ Q26   0.591 0.045 13.111      0    0.502    0.679
9  FSS =~ Q27   0.689 0.035 19.908      0    0.621    0.757
10 Q10 ~~ Q10   0.675 0.047 14.301      0    0.583    0.768
11 Q11 ~~ Q11   0.739 0.048 15.409      0    0.645    0.833
12 Q30 ~~ Q30   0.599 0.049 12.123      0    0.502    0.696
13  Q4 ~~  Q4   0.631 0.046 13.800      0    0.541    0.720
14 Q23 ~~ Q23   0.578 0.046 12.587      0    0.488    0.668
15 Q24 ~~ Q24   0.435 0.041 10.591      0    0.355    0.516
16  Q7 ~~  Q7   0.762 0.046 16.634      0    0.672    0.852
17 Q26 ~~ Q26   0.651 0.053 12.226      0    0.547    0.755
18 Q27 ~~ Q27   0.526 0.048 11.025      0    0.432    0.619
19 FSS ~~ FSS   1.000 0.000     NA     NA    1.000    1.000
fitMeasures(fit4alt, fit.measures = "all")
                         npar                          fmin                         chisq 
                       18.000                         0.056                        44.359 
                           df                        pvalue                  chisq.scaled 
                       27.000                         0.019                        85.491 
                    df.scaled                 pvalue.scaled          chisq.scaling.factor 
                       27.000                         0.000                         0.556 
               baseline.chisq                   baseline.df               baseline.pvalue 
                     1729.140                        36.000                         0.000 
        baseline.chisq.scaled            baseline.df.scaled        baseline.pvalue.scaled 
                      872.265                        36.000                         0.000 
baseline.chisq.scaling.factor                           cfi                           tli 
                        2.025                         0.990                         0.986 
                         nnfi                           rfi                           nfi 
                        0.986                         0.966                         0.974 
                         pnfi                           ifi                           rni 
                        0.731                         0.990                         0.990 
                   cfi.scaled                    tli.scaled                    cfi.robust 
                        0.930                         0.907                            NA 
                   tli.robust                   nnfi.scaled                   nnfi.robust 
                           NA                         0.907                            NA 
                   rfi.scaled                    nfi.scaled                    ifi.scaled 
                        0.869                         0.902                         0.931 
                   rni.scaled                    rni.robust                         rmsea 
                        0.930                            NA                         0.040 
               rmsea.ci.lower                rmsea.ci.upper                  rmsea.pvalue 
                        0.017                         0.061                         0.759 
                 rmsea.scaled         rmsea.ci.lower.scaled         rmsea.ci.upper.scaled 
                        0.074                         0.057                         0.092 
          rmsea.pvalue.scaled                  rmsea.robust         rmsea.ci.lower.robust 
                        0.013                            NA                            NA 
        rmsea.ci.upper.robust           rmsea.pvalue.robust                           rmr 
                           NA                            NA                         0.052 
                   rmr_nomean                          srmr                  srmr_bentler 
                        0.052                         0.055                         0.055 
          srmr_bentler_nomean                          crmr                   crmr_nomean 
                        0.055                         0.061                         0.061 
                   srmr_mplus             srmr_mplus_nomean                         cn_05 
                        0.055                         0.055                       358.190 
                        cn_01                           gfi                          agfi 
                      419.183                         0.989                         0.981 
                         pgfi                           mfi                          ecvi 
                        0.593                         0.978                         0.203 
moreFitIndices(fit4alt)
             gammaHat           adjGammaHat        baseline.rmsea       gammaHat.scaled 
            0.9903524             0.9839207             0.3450616             0.9682200 
   adjGammaHat.scaled baseline.rmsea.scaled 
            0.9470334             0.2425058 
library(semPlot)
semPlot::semPaths(
  fit4alt, "std", curvePivot = T, layout = "circle",
  rotation = 3, fade = T, intercepts = T, residuals = T,
  sizeLat = 4, sizeLat2 = 3, sizeMan = 4, esize = 1.5, asize = 1.5,
  edge.label.position = 0.55, levels = c(9.75,10,10,10))

Internal consistency

library(semTools)
(df <- semTools::reliability(fit4alt))
             FSS
alpha  0.8394996
omega  0.8401415
omega2 0.8401415
omega3 0.8388554
avevar 0.3710501
knitr::kable(df, digits = 3)
FSS
alpha 0.839
omega 0.840
omega2 0.840
omega3 0.839
avevar 0.371

Summarizing assessment model fits in short-versions

df <- summariseFits(list('uni model'=fit4uni, 'alt model'=fit4alt))
knitr::kable(df, digits = 3)
chisq df chisq/df gfi agfi cfi tli srmr rmsea rmsea.ci
uni model 305.503 27 11.315 0.91 0.849 0.539 0.385 0.137 0.162 [0.146; 0.178]
alt model 44.359 27 1.643 0.989 0.981 0.99 0.986 0.055 0.04 [0.017; 0.061]

IRT on the FSS-short version (9 itens - alternative version)

library(mirt)
mirt4alt <- mirt(fss[,c("Q10","Q11","Q30","Q4","Q23","Q24","Q7","Q26","Q27")],
                 1, itemtype='graded')
Iteration: 1, Log-Lik: -4417.229, Max-Change: 2.26553Iteration: 2, Log-Lik: -4323.610, Max-Change: 0.71319Iteration: 3, Log-Lik: -4302.027, Max-Change: 0.39904Iteration: 4, Log-Lik: -4294.821, Max-Change: 0.14063Iteration: 5, Log-Lik: -4291.548, Max-Change: 0.10464Iteration: 6, Log-Lik: -4289.921, Max-Change: 0.07147Iteration: 7, Log-Lik: -4288.981, Max-Change: 0.04729Iteration: 8, Log-Lik: -4288.553, Max-Change: 0.03426Iteration: 9, Log-Lik: -4288.318, Max-Change: 0.02522Iteration: 10, Log-Lik: -4288.078, Max-Change: 0.01181Iteration: 11, Log-Lik: -4288.049, Max-Change: 0.00804Iteration: 12, Log-Lik: -4288.032, Max-Change: 0.00535Iteration: 13, Log-Lik: -4288.016, Max-Change: 0.00349Iteration: 14, Log-Lik: -4288.013, Max-Change: 0.00318Iteration: 15, Log-Lik: -4288.011, Max-Change: 0.00195Iteration: 16, Log-Lik: -4288.008, Max-Change: 0.00179Iteration: 17, Log-Lik: -4288.007, Max-Change: 0.00104Iteration: 18, Log-Lik: -4288.007, Max-Change: 0.00093Iteration: 19, Log-Lik: -4288.006, Max-Change: 0.00035Iteration: 20, Log-Lik: -4288.006, Max-Change: 0.00016Iteration: 21, Log-Lik: -4288.006, Max-Change: 0.00011Iteration: 22, Log-Lik: -4288.006, Max-Change: 0.00044Iteration: 23, Log-Lik: -4288.006, Max-Change: 0.00050Iteration: 24, Log-Lik: -4288.006, Max-Change: 0.00012Iteration: 25, Log-Lik: -4288.006, Max-Change: 0.00010Iteration: 26, Log-Lik: -4288.006, Max-Change: 0.00030Iteration: 27, Log-Lik: -4288.006, Max-Change: 0.00009
param4alt <- coef(mirt4alt, simplify=T, IRTpars=T)
library(matrixStats)
df <- data.frame(param4alt$items)
df <- cbind(df, bx = matrixStats::rowMeans2(as.matrix(df), cols = c(2,3,4,5)))
df <- rbind(df, M = colMeans(df))
df <- rbind(df, SD = matrixStats::colSds(as.matrix(df)))
knitr::kable(df, digits = 3)
a b1 b2 b3 b4 bx
Q10 1.397 -3.357 -1.928 -0.596 0.940 -1.235
Q11 1.262 -3.090 -1.335 -0.162 1.823 -0.691
Q30 1.725 -3.531 -1.762 -0.670 0.822 -1.285
Q4 1.824 -3.071 -1.729 -0.595 1.320 -1.019
Q23 1.793 -2.725 -1.311 -0.239 1.441 -0.708
Q24 2.612 -3.050 -1.417 -0.416 1.110 -0.943
Q7 1.151 -3.420 -1.578 -0.360 1.828 -0.883
Q26 1.461 -2.592 -1.074 -0.027 1.791 -0.475
Q27 1.944 -2.535 -1.278 -0.085 1.527 -0.593
M 1.686 -3.041 -1.490 -0.350 1.400 -0.870
SD 0.416 0.341 0.260 0.223 0.360 0.263
plot(mirt4alt, type='infotrace')

plot(mirt4alt, type='info')

plot(mirt4alt, type='infoSE')